package com.nwpu.bigdata.service;

import com.nwpu.bigdata.dto.BackendResult;
import com.nwpu.bigdata.model.Fault;
import com.nwpu.bigdata.model.FaultExtend;
import com.nwpu.bigdata.model.Rule;
import com.nwpu.bigdata.model.User;

import java.util.List;

/**
 * @author carlin
 * @date 2018/7/30 0030 8:43
 */
public interface FaultDetectionService {


    /**
     * 检测事件表，判断是否触发规则
     *
     * @param rule
     * @param interval 检测事件表中同一源规则的触发时间间隔
     */
    void faultDetection(Rule rule, long interval);

    /**
     * 列举系统产生的状态信息
     * @param user 故障属于那个用户
     * @param page 故障的分页页码
     * @return 故障页码对应的信息
     */
    BackendResult<List<FaultExtend>> listFaults(User user, Long page);

    /**
     * 统计故障表中所有的故障信息
     * @return 故障表中所有的故障数目
     */
    long countFault(User user);

    /**
     * 定期删除故障表中已经被确认过的故障信息
     * @return 删除的故障信息数量
     */
    Long deleleFaultIsAck();

    /**
     *
     * @param id 故障id
     * @return 确认情况
     */
    BackendResult<Integer> updateFaultStatusAck(Long id);

    /**
     * 根据故障ID选取一条故障信息
     * @param id 故障的ID
     * @return 故障信息
     */
    BackendResult<FaultExtend> selectFaultById(Long id);

    /**
     *
     * @return
     */
    BackendResult<List<Fault>> selectFaultByIsSent();

    BackendResult<Integer> updateFaultStatusSent(Long id);
}
